package com.mydomain.Bodega;

import com.mydomain.Bodega.*;
import java.util.ArrayList;
import java.util.List;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.framework.EntityHome;

@Name("subdepartamentoHome")
public class SubdepartamentoHome extends EntityHome<Subdepartamento> {

	@In(create = true)
	DepartamentoHome departamentoHome;
	@In(create = true)
	UsuarioHome usuarioHome;

	public void setSubdepartamentoSubdepCodigo(Integer id) {
		setId(id);
	}

	public Integer getSubdepartamentoSubdepCodigo() {
		return (Integer) getId();
	}

	@Override
	protected Subdepartamento createInstance() {
		Subdepartamento subdepartamento = new Subdepartamento();
		return subdepartamento;
	}
	
	@Override
	@Transactional
	public String persist() {
		List varListado=
			getEntityManager().createQuery("SELECT s from Subdepartamento s join s.usuario u where u.usuCodigo =:codigoUsuario ")
			.setParameter("codigoUsuario", getInstance().getUsuario().getUsuCodigo()).getResultList();
		if (varListado.isEmpty()){
			getEntityManager().persist(getInstance());
			getEntityManager().flush();
			getFacesMessages().add("Se agrega  una bodega !!!");
		}else {
			getFacesMessages().add("El usuario ya tienes asignado uuna bodega !!!");
		}
			return "";
	}

	public void wire() {
		getInstance();
		Departamento departamento = departamentoHome.getDefinedInstance();
		if (departamento != null) {
			getInstance().setDepartamento(departamento);
		}
		Usuario usuario = usuarioHome.getDefinedInstance();
		if (usuario != null) {
			getInstance().setUsuario(usuario);
		}
	}
	
	@Override
	@Transactional
	public String update(){
		getEntityManager().merge(getInstance());
		getEntityManager().flush();
		getFacesMessages().add("Se actualizo de la bodega !!!");
		return null;
	}

	public boolean isWired() {
		return true;
	}

	public Subdepartamento getDefinedInstance() {
		return isIdDefined() ? getInstance() : null;
	}

	public List<InvCompras> getInvComprases() {
		return getInstance() == null ? null : new ArrayList<InvCompras>(
				getInstance().getInvComprases());
	}

	public List<InvDevolucion> getInvDevolucions() {
		return getInstance() == null ? null : new ArrayList<InvDevolucion>(
				getInstance().getInvDevolucions());
	}

	public List<InvEgreso> getInvEgresos() {
		return getInstance() == null ? null : new ArrayList<InvEgreso>(
				getInstance().getInvEgresos());
	}

	public List<InvIngreso> getInvIngresos() {
		return getInstance() == null ? null : new ArrayList<InvIngreso>(
				getInstance().getInvIngresos());
	}

}
